package com.cw.base.common.dispatch.pojo;

import java.io.Serializable;

import com.cw.base.common.dispatch.task.facade.call.NormalCall;
import com.cw.base.common.dispatch.task.facade.callback.TaskCallBack;
import com.cw.base.common.dispatch.task.facade.condition.LoopCondition;

import lombok.Builder;
import lombok.Data;

/**
 * Created on 15/11/9.
 *
 * @author zhangcheng
 */
@Data
@Builder
public class Task implements Comparable, Serializable {
    private static final long serialVersionUID = -5475115323426860686L;

    /** 公共请求参数 */
    private BaseReqDto baseReqDto;

    /** 公共请求用户对象 */
    private BaseUserReqDto baseUserReqDto;

    /** 执行方法 **/
    private String targetMethod;

    /** 执行对象 **/
    private Object targetObject;

    /**
     * 执行类
     */
    private String targetClass;

    /**
     * 执行类构造函数入参
     */
    private Object[] constructorParameters;

    /** 参数 **/
    private Object[] parameters;

    /** 正常回调接口 **/
    private TaskCallBack taskCallBack;

    /** 执行正常回调类 **/
    private String taskCallBackClass;
    /** 执行正常回调方法 **/
    private String taskCallBackMethod;

    /** 延迟多长时间执行 **/
    private long delayExecTime;
    /** 间隔多长时间执行 **/
    private long apartExecTime;

    /** 返回对象 **/
    private Object resultObject;

    /** 最多执行次数 **/
    private int execNum;

    private NormalCall normalTask;

    /**
     * 执行错误回调
     */
    private TaskCallBack errorTaskCallBack;

    /** 执行错误回调类 **/
    private String errorTaskCallBackClass;
    /** 执行错误回调方法 **/
    private String errorTaskCallBackMethod;

    /**
     * 回调类构造函数入参
     */
    private Object[] callBackConstructorParameters;

    /** 循环条件 **/
    private LoopCondition loopCondition;

    /**
     * 如果为true 则 失败继续往队列里插入，如果为false 则调用 回调接口
     */
    private boolean errorLoop;

    private String uuid;

    /** 业务变量 */
    private Object[] businessParam;

    @Override
    public int compareTo(Object o) {
        return 0;
    }
}
